<?php
/**
 * View_Article
 *
 * Класс View_Article отвечает за вывод информации, связанной со статьями
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_Article extends View_Base {

	/**
	 * Выводит страницу конкретной статьи
	 *
	 * @param Article $objArticle
	 */
	public function showOne(Article $objArticle, $objCategory, &$arrComments) {
		Service_Debug::setDebug();
		echo '<div id="article-full">';
			echo '<h1>' . $objArticle->getField('article_name');
				if (SimpleAdministration::isAdmin()) echo '<a href="' . W_ABSPATH . 'articles/edit/' . $objArticle->getField('ID_article') . '">(Редактировать)</a>';
			echo '</h1>';
			echo '<div class="simple-info">';
				echo '<div>';
					echo 'Раздел: ';
					if($objCategory->getField('category_name')) echo '<a href="' . W_ABSPATH . $objCategory->getField('url') . '/articles">' . $objCategory->getField('category_name') . '</a>';
					else echo  '<a href="' . W_ABSPATH .'no_category/articles">Без категории</a>';
				echo '</div>';
				echo '<div>';
					echo 'Опубликовано: ' . Service_Date::changeDateFormat($objArticle->getField('created_at'), 'Y-m-d', 'j R Y');
				echo '</div>';
			echo '</div>';
			echo '<div id="full-content">' . $objArticle->getField('text') . '</div>';
		echo '</div>';
		
		echo '<div class="art-comments">';
			echo '<div class="actions-block">';
				echo '<div class="to-hide">';
					echo '<a href="#" class="edit-link">Задать вопрос автору</a>';
					echo '<a href="#" class="comment-link">Комментировать</a>';
				echo '</div>';
			echo '</div>';
			echo '<div class="comm-text hid">';
				$objForm = new Form_ViewForm(array(
						'errorIfExists' => true,
						'viewFormType' => 'div',
						'class' => 'answer'), new ArticleComment());
				$objForm->show();
					$objForm->hiddenField(array('value' => $objArticle->id),'ID_article');// id текущей статьи
					$objForm->textareaField(array(), 'text');
					$objForm->submitButton(array('value' => 'Отправить'), 'save');
				$objForm->close();
			echo '</div>';
			echo '<div class="comments">';
				if(!empty($arrComments)) {
					echo '<p>Вопросы и комментарии</p>';
					foreach ($arrComments as $arrComment) {
						echo '<div class="comment-block">';
							echo '<div class="comment-info">';
								echo '<div class="com-date">' . Service_Date::changeDateFormat($arrComment['created_at'], 'Y-m-d H-i-s', 'j R Y в H:i') . '</div>';
							echo '</div>';
							echo '<div class="comment-text">' . $arrComment['text'] . '</div>';
						echo '</div>';
					}
				}
			echo '</div>';
		echo '</div>';
	}
	
	/**
	 * Выводит форму добавления/редактирвоания статьи
	 * 
	 * @param Article $objArticle
	 */
	public function showEditForm(Article $objArticle) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'enctype' => 'multipart/form-data',
			'errorIfExists' => true, 
			'leftWidth' => 200
		), $objArticle);
		
		$objForm->show();
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'Название статьи', 'required' => 1), 'article_name');
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'URL', 'required' => 1), 'url');
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'Meta-Title', 'required' => 1), 'title');
				
		$objForm->textField(array('maxlength' => 128, 'text' => 'Meta-description'), 'description');

		$objForm->textField(array('maxlength' => 128, 'text' => 'Meta-keywords'), 'keywords');
		
		$objCategory = new Category();
		$arrCategories = $objCategory->find('all', array('select' => 'category_name, ID_category', 'order' => "category_name ASC",));
		
		$objForm->selectField(array('text' => 'Категория','valueName' => 'category_name','keyName' => 'ID_category',
							 'optionsArray' =>$arrCategories, 'chooseText' => 'Без категории'),'ID_category');
		
		//Вывод WYSIWYG-поля
		$arrWysiwygSettings = array(
		  'rows' => 15, 
		  'cols' =>120, 
		  'text' => 'Текст', 
		  'class' => 'wysiwygAdmin',
		  'wideTextarea' => true 
		);
		$objForm->textareaField($arrWysiwygSettings, 'text');
		
		$objForm->fileField(array(),'article-main-picture');
		
		$objForm->submitButton(array(), 'save');
		$objForm->close();
	}
	
	
	/**
	 * (non-PHPdoc)
	 * @see View_Base::showOneInList()
	 */
	public function showOneInAdminList($arrArticle) {
		Service_Debug::setDebug();
		echo '<div class="article-block simple-block">';
			echo '<h2>';
				if ($arrArticle['category_url']) echo '<a href="' . W_ABSPATH . $arrArticle['category_url'] . '/articles/' . $arrArticle['article_url'] . '">' . $arrArticle['article_name'] . '</a>';
		 		else echo '<a href="' . W_ABSPATH . 'no_category/articles/' . $arrArticle['article_url'] . '">' . $arrArticle['article_name'] . '</a>';
		 	echo '</h2>';
			
			echo '<div class="simple-short-content">';
				if ($arrArticle['category_url']) echo '<a href="' . W_ABSPATH . $arrArticle['category_url'] . '/articles/' . $arrArticle['article_url'] . '">';
				else echo '<a href="' . W_ABSPATH . 'no_category/articles/' . $arrArticle['article_url'] . '">';
						echo '<img src="' . W_IMAGES . 'essence/article/' . $arrArticle['ID_article'] . '/main_' . $arrArticle['ID_article'] .'.jpg">';
				echo '</a>';
				echo '<p>';
					if(strlen($arrArticle['text']) > 400) echo Service_Function::utf8_substr($arrArticle['text'], 0,400) . '...';
					else echo $arrArticle['text'];
				echo '</p>';
				echo '<div class="clear"></div>';
			echo '</div>';
			
			echo '<div class="simple-info">';
				echo '<div>';
					echo 'Опубликовано: ' . Service_Date::changeDateFormat($arrArticle['created_at'], 'Y-m-d', 'j R Y');
				echo '</div>';
				echo '<div>';
					echo 'Раздел: ';
					if($arrArticle['category_name']) echo '<a href="' . W_ABSPATH . $arrArticle['category_url'] . '/articles">' .$arrArticle['category_name'] . '</a>';
					else echo  '<a href="' . W_ABSPATH .'no_category/articles">Без категории</a>';
				echo '</div>';
				echo '<div>';
					echo 'Просмотров: ' . $arrArticle['viewings'];
				echo '</div>';
			echo '</div>';
			
		echo '</div>';
	}
	
	/**
	 * Метод отображает список элементов переданного массива
	 *
	 * @param array $arrArticles - массив статей для отображения
	 * @param int $pagesNumber - количество страниц для навигации
	 * @param int $pageNumber - номер текущей страницы
	 */
	public function showAdminList($arrArticles, $objCategory = null, $pagesNumber = 0, $pageNumber = 0) {
		Service_Debug::setDebug();
    echo '<div id="articles-list">';
      if (!$arrArticles) echo 'Статей пока нет';
  	  else {
	      foreach ($arrArticles as $arrArticle) {
	      	$this->showOneInAdminList($arrArticle);
	      }
	    }
		echo '</div>';
		if ($pagesNumber > 1) {
			if ($objCategory == null) $pattern = W_ABSPATH . 'articles?'; 
			elseif($objCategory->id) $pattern =  W_ABSPATH . $objCategory->getField('url') . '/articles?';
			else $pattern =  W_ABSPATH . 'no_category' . '/articles?';
			$this->getNavigation($pattern, $pageNumber, $pagesNumber); 
		}
	}

	
	/**
	 * Метод отображает главную страницу архива(список месяц-год)
	 *
	 * @param array $monthArray - массив пар месяц-год, когда писались статьи
	 */
	public function showArchive($monthArray) {
		Service_Debug::setDebug();
		echo '<div>';
			if(empty($monthArray)) echo 'Архив пуст';
			else {
				foreach($monthArray as $monthYearValue) {
					echo '<p class="simple-list">';
						echo '<a href="' . W_ABSPATH . 'articles/archive/' . $monthYearValue . '" class="middle-green-link">' . Service_Date::changeDateFormat($monthYearValue, 'm-Y', 'Z Y') . '</a>';
					echo '</p>';
				}
			}
		echo '</div>';
	}
	
}
?>